﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Public Class ClientesAdicBL
    Public Function RegistrarClienteAdic(ByVal TokenConexion As String, ByVal ClienteAdic As ClientesAdicBE, ByRef codigoResp As Integer, ByRef mensajes As String) As Boolean
        Dim CliAdicDAL As ClientesAdicDAL = New ClientesAdicDAL("")
        mensajes = ""
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoParaRegistrar(ClienteAdic, mensajes)) Then
                CliAdicDAL = New ClientesAdicDAL(TokenConexion)
                If (CliAdicDAL.existeClienteAdic(ClienteAdic.IdCli)) Then
                    codigoResp = 343
                    mensajes &= "Existe un registro con el mismo Id del cliente indicado." & vbCrLf
                    Return False
                Else
                    If (CliAdicDAL.registraClienteAdic(ClienteAdic)) Then
                        codigoResp = 0
                        mensajes = "Los Datos Adicionales del Cliente se registraron con éxito."
                        Return True
                    Else
                        codigoResp = 348
                        mensajes &= "Los Datos Adicionales del Cliente no pudieron ser registrados en el sistema." & vbCrLf
                        Return False
                    End If
                End If
            Else
                codigoResp = 1
                mensajes = "El Cliente no es valido para registrar: " & mensajes
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "ClientesAdicBL.RegistrarClienteAdic")
            codigoResp = 999
            mensajes = mensajes & "Excepción al registrar el Cliente: " & ex.Message
            Return False
        Finally
            CliAdicDAL = Nothing
        End Try
    End Function

    Private Function EsValidoParaRegistrar(ByRef ClienteAdic As ClientesAdicBE, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre1)) Then
                ClienteAdic.campoLibre1 = ClienteAdic.campoLibre1.Trim
                If (ClienteAdic.campoLibre1.Length > 100) Then
                    ClienteAdic.campoLibre1 = ClienteAdic.campoLibre1.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre2)) Then
                ClienteAdic.campoLibre2 = ClienteAdic.campoLibre2.Trim
                If (ClienteAdic.campoLibre2.Length > 100) Then
                    ClienteAdic.campoLibre2 = ClienteAdic.campoLibre2.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre3)) Then
                ClienteAdic.campoLibre3 = ClienteAdic.campoLibre3.Trim
                If (ClienteAdic.campoLibre3.Length > 100) Then
                    ClienteAdic.campoLibre3 = ClienteAdic.campoLibre3.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre4)) Then
                ClienteAdic.campoLibre4 = ClienteAdic.campoLibre4.Trim
                If (ClienteAdic.campoLibre4.Length > 100) Then
                    ClienteAdic.campoLibre4 = ClienteAdic.campoLibre4.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre5)) Then
                ClienteAdic.campoLibre5 = ClienteAdic.campoLibre5.Trim
                If (ClienteAdic.campoLibre5.Length > 100) Then
                    ClienteAdic.campoLibre5 = ClienteAdic.campoLibre5.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre6)) Then
                ClienteAdic.campoLibre6 = ClienteAdic.campoLibre6.Trim
                If (ClienteAdic.campoLibre6.Length > 100) Then
                    ClienteAdic.campoLibre6 = ClienteAdic.campoLibre6.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre7)) Then
                ClienteAdic.campoLibre7 = ClienteAdic.campoLibre7.Trim
                If (ClienteAdic.campoLibre7.Length > 100) Then
                    ClienteAdic.campoLibre7 = ClienteAdic.campoLibre7.Substring(0, 100)
                End If
            End If

            If Not (String.IsNullOrWhiteSpace(ClienteAdic.campoLibre8)) Then
                ClienteAdic.campoLibre8 = ClienteAdic.campoLibre8.Trim
                If (ClienteAdic.campoLibre8.Length > 100) Then
                    ClienteAdic.campoLibre8 = ClienteAdic.campoLibre8.Substring(0, 100)
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "ClientesComBL.EsValidoParaRegistrar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function ActualizaClienteAdic(ByVal TokenConexion As String, ByVal ClienteAdic As ClientesAdicBE, ByRef codigoResp As Integer, ByRef mensajes As String) As Boolean
        mensajes = ""
        Dim CliAdicDAL As ClientesAdicDAL = New ClientesAdicDAL("")
        Try
            TokenConexion = RijndaelSimple.desencriptaDefault(TokenConexion)
            If (EsValidoParaRegistrar(ClienteAdic, mensajes)) Then
                CliAdicDAL = New ClientesAdicDAL(TokenConexion)
                If (CliAdicDAL.actualizaClienteAdic(ClienteAdic)) Then
                    codigoResp = 0
                    mensajes = "Datos del Cliente actualizados."
                    Return True
                Else
                    codigoResp = 349
                    mensajes = "No se pudo realizar la actualización de los Datos Adicionales del Cliente."
                    Return False
                End If
            Else
                codigoResp = 1
                mensajes = "La informacion no es valida para actualizar: " & mensajes
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "ClientesAdicBL.ActualizaClienteAdic")
            codigoResp = 999
            mensajes = mensajes & "Excepción al actualizar Cliente: " & ex.Message
            Return False
        Finally
            CliAdicDAL = Nothing
        End Try
    End Function

    Public Function GetClienteAdic(ByVal tokenConexion As String, ByVal IdCli As Integer, ByRef codigoResp As Integer, ByRef mensajes As String) As ClientesAdicBE
        mensajes = ""
        Dim CliAdicDAL As ClientesAdicDAL = New ClientesAdicDAL("")
        Dim CliAdicBE As ClientesAdicBE
        Try
            tokenConexion = RijndaelSimple.desencriptaDefault(tokenConexion)
            If (EsValidoParaGetClienteAdic(IdCli, mensajes)) Then
                CliAdicDAL = New ClientesAdicDAL(tokenConexion)
                If (CliAdicDAL.existeClienteAdic(IdCli)) Then
                    CliAdicBE = CliAdicDAL.getClienteAdic(IdCli)
                    If (CliAdicBE IsNot Nothing) Then
                        codigoResp = 0
                        mensajes = "Se obtuvieron los Datos Adicionales del Cliente con éxito."
                        Return CliAdicBE
                    Else
                        codigoResp = 350
                        mensajes = "No se obtuvieron los Datos Adicionales del Cliente"
                        Return Nothing
                    End If
                Else
                    codigoResp = 341
                    mensajes = "Cliente no existe" & vbCrLf & mensajes
                    Return Nothing
                End If
            Else
                codigoResp = 1
                mensajes = "El Id del Cliente proporcionado no existe: " & mensajes
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "ClientesAdicBL.GetClienteAdic")
            codigoResp = 999
            mensajes = mensajes & "Excepción al obtener información del Cliente: " & ex.Message
            Return Nothing
        Finally
            CliAdicDAL = Nothing
            CliAdicBE = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetClienteAdic(ByRef IdCli As Integer, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(IdCli)) Then
                mensaje &= "El campo ID del Cliente no puede ir vacio." & vbCrLf
            Else
                If (IdCli <= 0) Then
                    mensaje &= "El Id de la Cliente debe ser mayor a 0" & vbCrLf
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "ClientesAdicBL.EsValidoParaGetClienteAdic")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

End Class
